var gulp = require("gulp");
//静态服务器插件
var webserver = require("gulp-webserver");
//刷新页面插件
var livereload = require("gulp-livereload");
//编译sass插件
var rubySass = require("gulp-ruby-sass");
//压缩js插件
var uglify = require("gulp-uglify");
//引入map插件
var sourceMap = require("gulp-sourcemaps");
//引入重命名插件
var rename = require("gulp-rename");
//引入查询更改插件
var changed = require("gulp-changed");
//引入图片压缩插件 
var imagemin = require("gulp-imagemin");
//引入深度压缩插件
var pngquant = require("imagemin-pngquant");
//引入合并文件插件
var concat = require("gulp-concat");
/*简单应用     输出你好*/
/*
 * task:
 * 		发布任务
 * 		gulp.task("任务名称",backFn);
 */
/*gulp.task("hello",function(){
	console.log("hello。你好")
});*/

/*发布自动刷新任务*/
gulp.task("reload",function(){
	gulp.src("src")
	//pipe  管道函数；当上一步完成才会执行pipe的方法；
	.pipe(webserver({
		livereload:true,
		open:true
	}))
});

/*发布文件搬运任务*/
gulp.task("moveHtml",function(){
	//引入要搬运的文件
	return gulp.src("src/*/*.html")
	//输出到相应位置
	.pipe(gulp.dest("dist"))
});
gulp.task("moveIndex",function () {
	return gulp.src("src/*.html")
		.pipe(gulp.dest("dist"));
});
/*监听文件*/
gulp.task("see",function(){
	gulp.watch("src/*/*.html",["moveHtml"])
});
gulp.task("seeIndex",function () {
	gulp.watch("src/*.html",["moveIndex"]);
});
/*发布编译sass任务*/
gulp.task("sass",function(){
	//调用rubySass插件，对scss文件进行编译；
//			 compressed   将编译过后的css代码进行压缩；
//			 nested       嵌套缩进   默认值
//	         expanded     没有缩进的、扩展的代码
//	         compact      简洁格式
	rubySass("src/sass/*.scss",{style:"compressed"})
	//监听编译结果
	.on("error",function(err){
		console.log(err);
	})
	//将编译过后的css文件输出到发布环境中
	.pipe(gulp.dest("dist/sass"));
});
/*监听sass,自动编译*/
gulp.task("seeSass",function(){
	gulp.watch("src/sass/*.scss",["sass"]);
});

/*发布压缩js代码任务*/
gulp.task("minjs",function(){
	//导入js文件
	return gulp.src("src/js/*.js")
	//将未压缩的js初始化到sourceMap中；
	.pipe(sourceMap.init())
	//js代码进行压缩
	.pipe(uglify())
	//重命名   suffix后缀   添加后缀名
	.pipe(rename({suffix:".min"}))
	//将文件写入maps文件夹里
	.pipe(sourceMap.write("maps"))
	//输出至发布环境
	.pipe(gulp.dest("dist/js"));
});
/*监听压缩*/
gulp.task("seeJs",function(){
	gulp.watch("src/js/*.js",["minjs"])
});

/*发布压缩图片任务*/
gulp.task("minImg",function(){
	gulp.src("src/image/*.{jpg,png,gif,svg}")
	.pipe(changed("dist/image"))
	.pipe(imagemin({
		user:[pngquant]
	}))
	.pipe(gulp.dest("dist/image"));
});
/*监听图片*/
gulp.task("seeImg",function () {
	gulp.watch("src/images/*.{jpg,png,gif,svg}",["minImg"]);
});
/*合并文件*/
gulp.task("concat",function(){
	//将需要被合并的文件引入
	gulp.src("src/js/demo*.js")
	//合并为 什么文件
	.pipe(concat("demo.js"))
	//将合并后的文件输出至上线环境
	.pipe(gulp.dest("dist/js"));
});
/*监听所有*/
gulp.task("watch",["see","seeJs","seeSass","seeIndex","seeImg"]);












